Many academic institutions have courses which teach software programming to students. It is common in these courses for students to learn the programming language in a hands-on environment by allowing the student to develop his/her own software programs for question papers assigned by the instructor. Each student's knowledge of the programming language is then evaluated by the instructor reviewing the student's written code and/or actually running the student's program on a computer. This would require the instructor to run the program, input information in response to several inquiries generated by the student's program, review all of the program's outputs before scoring the student's response. Requiring the instructor to manually evaluate each student's submission program (in a potential class of a hundred students) is burdensome and time consuming. Further, it may be possible that the instructor may input two different values for the same inquiry when running two different students' programs. This results in a non-objective evaluation of different students' program and produces inconsistencies in scoring among the students' submissions.
What is needed is a solution which automatically evaluates a plurality of student submitted software programs in an objective and efficient manner to address the above specified disadvantages.